package com.yckj.day09;

/**
 * TODO 如何实现多态
 *
 * @author shengyuee
 * @version 1.0
 * 2025/7/28 14:28
 */
public class Test1 {
    public static void main(String[] args) {
        // 多态形式:抽象类 变量名 = new 抽象类子类();
        Father son = new Son();
        // 多态:接口 变量名 = new 接口实现类();
        InterfaceDemo1 demo1 = new ImplDemo1();
        // 多态： 父类 变量名 = new 子类();
        Father1 son1 = new Son1();

        // 调用子类与父类同名的重写后的方法时是调用的子类的方法,编译看左边，运行看右边。
        son.eat();
        demo1.show1();
        son1.sleep();
        // 访问父子类中同名成员变量，编译运行都看左边
        int num = son1.num;
        System.out.println("num = " + num);
        Son1 son11 = new Son1();
        int num1 = son11.num;
        System.out.println("num1 = " + num1);
        // 调用子类与父类同名的重写后的方法时是调用的子类的方法,编译看左边，运行看右边。
        son1.sleep();
        son11.sleep();
        // 多态形式下，无法调用子类特有的方法
       // son1.act();
        son11.act();

    }
}
